#include <set>
#include <vector>
#include <fstream>
#include <algorithm>
#include <iostream>

using namespace std;

int main(int argc, char const *argv[])
{
  /* code */
  ifstream ifs("Blocks.in");

  int words = 0;
  ifs >> words;

  vector<set<char>> blocks;

  for (int i = 0; i < 4; ++i) {
    string block;
    ifs >> block;

    set<char> coll;
    for (char n : block) {
      coll.insert(n);
    }

    blocks.push_back(coll);
  }
  
  // Bessie 学习的单词最长只有 4 个字符
  // blocks 存的就是 4 个骰子

  string word;
  ifs >> word;

  // 最简单的匹配方法，遍历 word 中的每一个字母
  // blocks[0] -> 第一个字母；
  // blocks[2] -> 第二个字母；
  // ...

  do {
    // blocks 就是这四个骰子的一种排列方式
    bool isMatch = true;

    // 是这四个骰子其中一种排列情况的匹配
    for (int i = 0; i < word.size(); ++i) {
      // 用 blocks[i] 去 匹配 word[i]
      // blocks[i] 的类型是 set<char>
      // word[i] 的类型是 char
      // 如果找到了，find 就会返回一个迭代器，指向 set 中 word[i] 这个字符的位置
      // 如果找不到，find blocks[i].end()
      
      if (find(blocks[i].begin(), blocks[i].end(), word[i]) == blocks[i].end()) {
        // 找到了 word[i]
        isMatch = false;
        break;
      }
    }
  } while (next_permutation(blocks.begin(), blocks.end()));

  if (isMatch) {
    cout << "YES" << endl;
  }
  else {
    cout << "NO" << endl;
  }

  return 0;
}

















